{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Feature Extraction with Different Methods"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The idea of this work is to show the use of different techniques for extraction of characteristics in a given database. The methods used are shown below:\n",
    "\n",
    "<ul>\n",
    "    <li><a href='#univariate_'>Univariate Feature Selection</a></li>\n",
    "    <li><a href='#rfe_'>Recursive Feature Elimination</a></li>\n",
    "    <li><a href='#rfecv_'>Recursive Feature Elimination with Cross-Validation</a></li>\n",
    "    <li><a href='#tree_'>Tree based feature selection</a></li>\n",
    "    <li><a href='#pca_'>Feature Extraction through PCA</a></li>\n",
    "</ul>\n",
    "\n",
    "Applying techniques shown above, we will test the effectiveness through a Random Forest classifier."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. Let's Start"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we need to load all libraries we will use in this work."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd # To handle the data set.\n",
    "import seaborn as sb # To display visualizations.\n",
    "import matplotlib.pyplot as plt # To plot\n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import train_test_split # To split data\n",
    "from sklearn.ensemble import RandomForestClassifier # Random Forest\n",
    "from sklearn.metrics import confusion_matrix # To calculate the confusion matrix\n",
    "from sklearn.metrics import accuracy_score # To calculate the score\n",
    "from sklearn.feature_selection import SelectKBest # Univariate Feature Selection\n",
    "from sklearn.feature_selection import chi2 # To apply Univariate Feature Selection\n",
    "from sklearn.feature_selection import RFE # Recursive Feature Selection\n",
    "from sklearn.feature_selection import RFECV # Recursive Feature Selection with Cross Validation\n",
    "from sklearn.decomposition import PCA # To apply PCA\n",
    "from sklearn import preprocessing # To get MinMax Scaler function\n",
    "\n",
    "# To plot inline\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.1 Loading and Preparing DataSet\n",
    "\n",
    "We need to load the dataset. In this case we are going to use the dataset provided for Kaggle Contest in: https://www.kaggle.com/jsphyg/weather-dataset-rattle-package."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Loading file and dropping some columns (the justification is shown in my latest kernel \n",
    "# https://www.kaggle.com/ferneutron/classification-and-data-visualization\n",
    "\n",
    "australia = pd.read_csv('weatherAUS.csv') \n",
    "australia = australia.drop(['Location','Date','Evaporation','Sunshine', 'Cloud9am','Cloud3pm',\n",
    "                           'WindGustDir','WindGustSpeed','WindDir9am','WindDir3pm','WindSpeed9am',\n",
    "                           'WindSpeed3pm'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Splitting between X and Y vector wich means the corpus and target vector respectively\n",
    "Y = australia.RainTomorrow\n",
    "X = australia.drop(['RainTomorrow'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Switching 'Yes' and 'No' with a boolen value and handling NaN values, in this case replacing it with a zero\n",
    "X = X.replace({'No':0, 'Yes':1})\n",
    "X = X.fillna(0)\n",
    "Y = Y.replace({'No':0, 'Yes':1})\n",
    "Y = Y.fillna(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.2 Scaling Data\n",
    "\n",
    "Working with values in a wide range is not convenient, we need to scale it. \n",
    "In this case we are going to normalize it and scaling it in a 0-1 range."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Initializing the MinMaxScaler function\n",
    "min_max_scaler = preprocessing.MinMaxScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MinTemp</th>\n",
       "      <th>MaxTemp</th>\n",
       "      <th>Rainfall</th>\n",
       "      <th>Humidity9am</th>\n",
       "      <th>Humidity3pm</th>\n",
       "      <th>Pressure9am</th>\n",
       "      <th>Pressure3pm</th>\n",
       "      <th>Temp9am</th>\n",
       "      <th>Temp3pm</th>\n",
       "      <th>RainToday</th>\n",
       "      <th>RISK_MM</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.516509</td>\n",
       "      <td>0.523629</td>\n",
       "      <td>0.001617</td>\n",
       "      <td>0.71</td>\n",
       "      <td>0.22</td>\n",
       "      <td>0.968012</td>\n",
       "      <td>0.968738</td>\n",
       "      <td>0.508439</td>\n",
       "      <td>0.522073</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.375000</td>\n",
       "      <td>0.565217</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.44</td>\n",
       "      <td>0.25</td>\n",
       "      <td>0.970797</td>\n",
       "      <td>0.969411</td>\n",
       "      <td>0.514768</td>\n",
       "      <td>0.570058</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.504717</td>\n",
       "      <td>0.576560</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.38</td>\n",
       "      <td>0.30</td>\n",
       "      <td>0.967915</td>\n",
       "      <td>0.970277</td>\n",
       "      <td>0.594937</td>\n",
       "      <td>0.548944</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.417453</td>\n",
       "      <td>0.620038</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.45</td>\n",
       "      <td>0.16</td>\n",
       "      <td>0.977522</td>\n",
       "      <td>0.974221</td>\n",
       "      <td>0.533755</td>\n",
       "      <td>0.612284</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.002695</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.613208</td>\n",
       "      <td>0.701323</td>\n",
       "      <td>0.002695</td>\n",
       "      <td>0.82</td>\n",
       "      <td>0.33</td>\n",
       "      <td>0.970989</td>\n",
       "      <td>0.967680</td>\n",
       "      <td>0.527426</td>\n",
       "      <td>0.673704</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000539</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    MinTemp   MaxTemp  Rainfall  Humidity9am  Humidity3pm  Pressure9am  \\\n",
       "0  0.516509  0.523629  0.001617         0.71         0.22     0.968012   \n",
       "1  0.375000  0.565217  0.000000         0.44         0.25     0.970797   \n",
       "2  0.504717  0.576560  0.000000         0.38         0.30     0.967915   \n",
       "3  0.417453  0.620038  0.000000         0.45         0.16     0.977522   \n",
       "4  0.613208  0.701323  0.002695         0.82         0.33     0.970989   \n",
       "\n",
       "   Pressure3pm   Temp9am   Temp3pm  RainToday   RISK_MM  \n",
       "0     0.968738  0.508439  0.522073        0.0  0.000000  \n",
       "1     0.969411  0.514768  0.570058        0.0  0.000000  \n",
       "2     0.970277  0.594937  0.548944        0.0  0.000000  \n",
       "3     0.974221  0.533755  0.612284        0.0  0.002695  \n",
       "4     0.967680  0.527426  0.673704        0.0  0.000539  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Scaling dataset keeping the columns name\n",
    "X_scaled = pd.DataFrame(min_max_scaler.fit_transform(X), columns = X.columns)\n",
    "X_scaled.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.3 Splitting up Data\n",
    "\n",
    "We have scaling the values in the corpus <i>X</i>, now we need to separate it in train and test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Splitting  up data, seting 75% for train and 25% for test.\n",
    "x_train, x_test, y_train, y_test = train_test_split(X_scaled, Y, test_size=0.25, random_state=43)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='univariate_'></a>\n",
    "# 2. Univariate Feature Selection\n",
    "\n",
    "This method works by selection the <i>K</i> beast features acording to a score. The <i>K</i> number of features\n",
    "is setting explicity."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Initialize SelectKBest function\n",
    "UnivariateFeatureSelection = SelectKBest(chi2, k=5).fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.38721934158151944, 'Pressure3pm'),\n",
       " (0.4154027206129659, 'Pressure9am'),\n",
       " (1.9060887930404711, 'Temp9am'),\n",
       " (37.949907444810087, 'MinTemp'),\n",
       " (78.295983688805762, 'MaxTemp'),\n",
       " (128.20122465798136, 'Temp3pm'),\n",
       " (372.32687506872361, 'Humidity9am'),\n",
       " (484.21828218386412, 'Rainfall'),\n",
       " (1722.846832233133, 'Humidity3pm'),\n",
       " (2253.2180401090068, 'RISK_MM'),\n",
       " (7864.2363999308172, 'RainToday')]"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Creating a dict to visualize which features were selected with the highest score\n",
    "diccionario = {key:value for (key, value) in zip(UnivariateFeatureSelection.scores_, x_train.columns)}\n",
    "sorted(diccionario.items())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, the last five elements have the highest score. So the best features are:\n",
    "\n",
    "<ul>\n",
    "    <li>1. RainToday</li>\n",
    "    <li>2. RISK_MM</li>\n",
    "    <li>3. Humidity3pm</li>\n",
    "    <li>4. Rainfall</li>\n",
    "    <li>5. Humidity9am</li>\n",
    "</ul>\n",
    "\n",
    "Now that we have the best features, let's extract them from the original data set and let's measure the performance \n",
    "with the random forest algorithm."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.1 Extracting the best <i>K</i> values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Using the 'UnivariateFeatureSelection' based on 'SelectKBest' function,\n",
    "# let's extract the best features from the original dataset\n",
    "\n",
    "x_train_k_best = UnivariateFeatureSelection.transform(x_train)\n",
    "x_test_k_best = UnivariateFeatureSelection.transform(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of original data:  (109095, 11)\n",
      "Shape of corpus with best features:  (109095, 5)\n"
     ]
    }
   ],
   "source": [
    "print(\"Shape of original data: \", x_train.shape)\n",
    "print(\"Shape of corpus with best features: \", x_train_k_best.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2 Testing with Random Forest Algorithm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Initializing and fitting data to the random forest classifier\n",
    "RandForest_K_best = RandomForestClassifier()      \n",
    "RandForest_K_best = RandForest_K_best.fit(x_train_k_best, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy:  1.0\n"
     ]
    }
   ],
   "source": [
    "# Making a prediction and calculting the accuracy\n",
    "y_pred = RandForest_K_best.predict(x_test_k_best)\n",
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print('Accuracy: ',accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x12639e780>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x12639c7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Showing performance with a confusion matrix\n",
    "confMatrix = confusion_matrix(y_test, y_pred)\n",
    "sb.heatmap(confMatrix, annot=True, fmt=\"d\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='rfe'></a>\n",
    "# 3. Recursive Feature Elimination\n",
    "\n",
    "The idea of this method is to make use of an estimator (in this case we are using random forest), and test with\n",
    "different sizes of features until find the best set of features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Initializing Random Forest Classifier\n",
    "RandForest_RFE = RandomForestClassifier() \n",
    "# Initializing the RFE object, one of the most important arguments is the estimator, in this case is RandomForest\n",
    "rfe = RFE(estimator=RandForest_RFE, n_features_to_select=5, step=1)\n",
    "# Fit the origial dataset\n",
    "rfe = rfe.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best features chosen by RFE: \n",
      "\n",
      "Rainfall\n",
      "Humidity3pm\n",
      "Pressure9am\n",
      "RainToday\n",
      "RISK_MM\n"
     ]
    }
   ],
   "source": [
    "print(\"Best features chosen by RFE: \\n\")\n",
    "for i in x_train.columns[rfe.support_]:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.1 Testing with Random Forest Algorithm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Generating x_train and x_test based on the best features given by RFE\n",
    "x_train_RFE = rfe.transform(x_train)\n",
    "x_test_RFE = rfe.transform(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Fitting the Random Forest\n",
    "RandForest_RFE = RandForest_RFE.fit(x_train_RFE, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy:  1.0\n"
     ]
    }
   ],
   "source": [
    "# Making a prediction and calculting the accuracy\n",
    "y_pred = RandForest_RFE.predict(x_test_RFE)\n",
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print('Accuracy: ',accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1060ba7b8>"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1060b5cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Showing performance with a confusion matrix\n",
    "confMatrix = confusion_matrix(y_test, y_pred)\n",
    "sb.heatmap(confMatrix, annot=True, fmt=\"d\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='rfecv'></a>\n",
    "# 4. Recursive Feature Elimination with Cross-Validation\n",
    "\n",
    "This method is an extention of Recursive Feature Elimination showed above. In this method we have to \n",
    "set the number of k-fold cross validation, basically takes the subset of the traing set and measure the\n",
    "performance recurively with respect to the number of features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best number of features : 5\n",
      "Features :\n",
      "\n",
      "Rainfall\n",
      "Humidity9am\n",
      "Humidity3pm\n",
      "RainToday\n",
      "RISK_MM\n"
     ]
    }
   ],
   "source": [
    "# Initialize the Random Forest Classifier\n",
    "RandForest_RFECV = RandomForestClassifier() \n",
    "# Initialize the RFECV function setting 3-fold cross validation\n",
    "rfecv = RFECV(estimator=RandForest_RFECV, step=1, cv=3, scoring='accuracy')\n",
    "# Fit data\n",
    "rfecv = rfecv.fit(x_train, y_train)\n",
    "\n",
    "print('Best number of features :', rfecv.n_features_)\n",
    "print('Features :\\n')\n",
    "for i in x_train.columns[rfecv.support_]:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAGFCAYAAAAW4EKEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl8lNW9x/HPJIEAQmTfAsgi/pBFwN1KEbpel9qqtdVa\n2+vSRevSq21te1vt7tbaWmvV1lq12tbaWrWu7a3gglBF2YWfgCySIDuEJQGy3D/OMziGADOTSWYm\n832/XnmZec4zz/ObQyQ/znPO+cUaGhoQERERaeuKsh2AiIiISGtQ0iMiIiIFQUmPiIiIFAQlPSIi\nIlIQlPSIiIhIQVDSIyIiIgVBSY+IiIgUBCU9IiIiUhCU9IiIiEhBKMl2APJeZtYLuAP4ILAO+LG7\n37ef8z8C3AQMA6YDl7n7mwntXwMuBboCfweucPftUdtBwC+AjwM1wK/c/aaE9x4N3AqMA1YCP3H3\nP2Tu0+65z3nAxe4+OdPXFhERidNIT+55FOgPnAR8FbjFzD7R1IlmNgp4gpDMHAnMAp4zs05R+5eA\na4FvAicCA4A/JlzibuD9wOnAucAlZvbV6L1lwFPAi8Ao4IfA3WZ2QiY/rJlNBu4CVA9FRERalEZ6\nssjMrgMGu/sF0eujgOOBoe6+AphrZjcC3yAkQ419GZjm7t+PXl9jZqcB5wG/BS4Dfuruf4mu/3mg\nwsyGAxuBTwOT3H1G1H4NcAth9Gcg8JS7fzO69nIzu5qQPE3P4Of/JvDmgc4VERFpLo30ZF/iCMdQ\nYF2U8MTNBY4ys+Im3jsU+E+jY/OAExLaX4k3uPs7hEdmJ0RtDYnt0b36mdkgd1/g7v8NYGYxM/sY\ncBjwfPxkMzvDzBaY2XYzm2FmE5P90JEPAh8GHknxfSIiIilT0pNb1gBdzaxDwrFBhBG5g/dxfnmj\nYwOBnk21R3N4ukfta4BYo/cPiv7bM+E97QjzfR4F7nf3V6PjY4F7gR8AY4AHgKfMbGhyHxXcfaK7\nv5Ts+SIiIs2hx1utzMwmAE9HL9tHx84mjLqcDFQCvzKzKwhze/4n8dxGHgIeM7M/A88AnwWOAZ5L\naP+WmU0DlhMeXTUA7d19pZnNAH5pZp8FSoHr9nGv44ARwK/NbLG7/wK4GviNuz8UnfMrM5sEXAJ8\n3cwGAe2aiHmbu6/ZTxeJiIi0CCU9re9VYGz0/ZWExOYbhFGXCuBs4C9AFWE05iZCslLV+ELu/qyZ\nfR/4G1AMTAHu491RoR8CQ4AFwC7ChOHZCdf6LPBXYD2wGfgWYU7Rnnu5++7oPbPNrBy4gjDn53Dg\nbDP7ckJI7QjJF4THYIPY22PAmfvuHhERkZahpKeVuftO4C0AM9sIdHH3ZQmnvAYMM7PehGTko8B6\nd9+xj+tdb2Y/BQ529/Vm9hBhVIfoPeeY2ReABnffZmZrEtrfAo40s57AFuBQoB5YaWaDgcPc/Z8J\nt3uDdx99lQA3Avc3Cqk6uvaQlDpGRESkhSnpySFm1g14HDjd3ddGx04Dpu7j/HOA49z9f4D1ZtYR\nmAx8Lmq/EVjg7vdHr48ByoCXzSxGGJW52t3nJ9zr9Sg5OhW408z6RokawNHAwuh7B4ZEiVM8npuA\nRcA9GekQERGRDFLSk0UJS83jrzdFk41vMrOfEFY3/TdhLx0AzKwPsMXdawhLve8xsxeA+YRHYSvc\nPf6IqRK41szeIMzl+QPwa3ffHF1rB3C9mf0PMBr4LuGRF4T9fzYDd5nZjwlzhb5GWA4P8HPgBTOb\nCTxJ2Ovnq8AHMtE3IiIimabVW7nn04THTHMJ82c+6e6vJ7SvBj4FEB2/BPgZYa5QHXBawrm3EUaO\nniYkJo8DX09o/1L0nteAmwm7OT8eXXs74dFa/6j9h8CV7v5E1P4f4HzCbs8LgIuBc7QaS0REclWs\noUEb4YqIiEjbp5EeERERKQhKekRERKQgaCJzK2poaGjYuHE79fV6pJisoqIY3bsfhPoteeqz9Kjf\nUqc+S4/6LXVFRTF69Ogca/Z1MhGMJCcWi1FU1Ow/s4JSVBRTv6VIfZYe9Vvq1GfpUb+lLlN9paRH\nRERECoKSHhERESkISnpERESkICjpERERkYKgpEdEREQKgpIeERERKQhKekRERKQgKOkRERGRgqCk\nR0RERAqCkh4REREpCEp6REREpCAo6REREZGCoKRHRERECoKSHhERESkISnpERESkICjpERERkYKg\npEdEREQKgpIeERERKQhKekRERKQgKOkRERGRgqCkR0RERAqCkh4REREpCEp6REREpCAo6REREZGC\noKRHRERECoKSHhERESkISnpERESkICjpERERkYKgpEdEREQKgpIeERERKQhKekRERKQgKOkRERGR\ngqCkR0RERAqCkh4REREpCEp6REREpCAo6REREZGCoKRHRERECoKSHhERESkISnpERESkICjpERER\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11f257668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting the best features with respect to the Cross Validation Score\n",
    "plt.figure()\n",
    "plt.xlabel(\"Number of Features\")\n",
    "plt.ylabel(\"Score of Selected Features\")\n",
    "plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case we can visualize that the best number of features is 2."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='tree'></a>\n",
    "# 5. Tree based Feature Selection\n",
    "\n",
    "This method is to compute the relevance of each feature in the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Initialize the Random Forest Classifier\n",
    "RandForest_Tree = RandomForestClassifier()  \n",
    "# Fit the random forest with the original data\n",
    "RandForest_Tree = RandForest_Tree.fit(x_train, y_train)\n",
    "# Getting the relevance between features\n",
    "relevants = RandForest_Tree.feature_importances_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Apply the tree based on importance for the random forest classifier and indexing it\n",
    "std = np.std([tree.feature_importances_ for tree in RandForest_Tree.estimators_], axis=0)\n",
    "indices = np.argsort(importances)[::-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Feature Rank:\n",
      "1. Feature 10 (0.857420)\n",
      "2. Feature 4 (0.068348)\n",
      "3. Feature 2 (0.015379)\n",
      "4. Feature 9 (0.013252)\n",
      "5. Feature 5 (0.010582)\n",
      "6. Feature 3 (0.009201)\n",
      "7. Feature 8 (0.009060)\n",
      "8. Feature 6 (0.008503)\n",
      "9. Feature 0 (0.003242)\n",
      "10. Feature 7 (0.002849)\n",
      "11. Feature 1 (0.002165)\n"
     ]
    }
   ],
   "source": [
    "# Printting the ranking of importance\n",
    "print(\"Feature Rank:\")\n",
    "\n",
    "for i in range(x_train.shape[1]):\n",
    "    print(\"%d. Feature %d (%f)\" \n",
    "          % (i + 1, indices[i], importances[indices[i]]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nPN2LhHfVWl+yiX3vl+T4JL+T5CdJjqu1vmvUNQEAQN+MdES+lPLiJH+a5HFJnpjkaaWUIzey7x5J\nPpnk80numeSYJCeWUh41ypoAAKCPRj0i/8Ikf1trPTNJSikvSfLqJCcssu/jk1xWaz1q8PVFpZSD\nkzw1yX+MuC4AAOiVkY3Il1L2SvIbSb6yYPNXk+w9GH0f9h9JDltk++1GVRMAAPTVKEfk90oyl+TS\nBduuSLIiyR0Gn9+o1npxkovnvy6l/Fq6aTmvGGFNAADQS1sU5Esp2yf59Y3cfNskqbWuW7DtF4N/\nt1vCcT+S7kXAO7akJgAAmEZbOiJ/3yRfSDfyPuwlSVJK2XZBmJ8P8Ndt7ICllJ2S/HuSOyd5YK31\n+qUWMzOzIjMzK5a6e5NWrpz5pX/7alr6TKanV332iz77RZ/9Mi19JtPV61KsmJtbLJNvucEc+Z8k\n2WcwbSallDsluSjJ7WutVyxyn52TfCrJvkkOrrVeMJJiAACg50b2cqbWelmS/5vkQQs2PzjJxRsJ\n8SuSfDTJnZI8RIgHAIClG/Xyk29L8vpSyiXpTnJ9bZI3zt9YStk9ydpa65okz0rysCR/lGT1gpVt\n1tVarx5xXQAA0CujDvJvTPKrSU5Lsj7JO2utb1lw+1lJTknyqiSHpAv7Hx86xpeS/O6I6wIAgF4Z\n2Rx5AABg63HKLwAANEiQBwCABgnyAADQIEEeAAAaJMgDAECDBHkAAGjQqNeRBwCYuFLKTknunGQ2\nyYW11usnXBIjUEq5XZLZWuvPJ13LcmAdeWBkSil3rLVePOk6YEuUUvZLctck2w3fVmv9l61fEbdG\nKWWHJCcleUqSbQeb1yZ5d5Ija603TKq2USulPDob/9n9u61f0XiUUmaSHJXkOUn2HGy+OMlba63H\nT6ywZcCIPMtCKWWPLP6LqNlQWEr5QpIlvVKutfblasYXlVK+nuQDST5Ua71i0gWNQyllryR/k43/\nAe3L9zOllN3SjWou1ueXt35Fo1VKOTbJS5NclS7sLTSXpDdBfjBC/axs/Of28K1e1Hi8PcmBSR6T\n5OwkK5MclORNSY5L8qLJlTY6pZR3J3lakvOy+M9ub4J8kjcm+ZMkR+eXv6evKKXsUGt9zSSLmyRB\nfpkopWxY6r611pXjrGVrKqX8cZKTk+wydNOKdL+IWu71i5MuYAJ+I8kfJ3lykuNKKV9NF+o/XGu9\n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\n4FGiUWsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11fff0eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting the feature importances\n",
    "plt.figure(1, figsize=(9, 8))\n",
    "plt.title(\"Feature Importances\")\n",
    "plt.bar(range(x_train.shape[1]), importances[indices], color=\"r\", yerr=std[indices], align=\"center\")\n",
    "plt.xticks(range(x_train.shape[1]), x_train.columns[indices],rotation=90)\n",
    "plt.xlim([-1, x_train.shape[1]])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "<a id='pca'></a>\n",
    "# 6. Feature Extraction through PCA\n",
    "\n",
    "In some cases it is convenient to apply dimensionality reduction to visualize the number of components\n",
    "or elements which could be the best for our model. In this case we apply PCA to discover which ones are\n",
    "the features to obtain a acceptable performance in the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PCA(copy=True, iterated_power='auto', n_components=None, random_state=None,\n",
       "  svd_solver='auto', tol=0.0, whiten=False)"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Initializing PCA and fitting\n",
    "pca = PCA()\n",
    "pca.fit(x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x11ff41b38>"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11feee208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting to visualize the best number of elements\n",
    "plt.figure(1, figsize=(9, 8))\n",
    "plt.clf()\n",
    "plt.axes([.2, .2, .7, .7])\n",
    "plt.plot(pca.explained_variance_ratio_, linewidth=2)\n",
    "plt.axis('tight')\n",
    "plt.xlabel('Number of Feautres')\n",
    "plt.ylabel('Variance Ratio')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, making use of dimensionality reduction we find that the best number of features are in a range of 2 - 4 \n",
    "features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda root]",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
